HTMLify
155. Min Stack.java
Views: 1 | Author: cody
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | // 155. Min Stack java solution import java.util.Stack; class MinStack { Stack<Long> st1 = new Stack<>(); long min; public MinStack() { st1 = new Stack<>(); min = Integer.MAX_VALUE; } public void push(int val) { if (st1.isEmpty()) { st1.push(0L); min = val; } else { long diff = val - min; st1.push(diff); if (diff < 0) min = val; } } public void pop() { if (st1.isEmpty()) return; long rem = st1.pop(); if (rem < 0) min = min - rem; } public int top() { if (st1.isEmpty()) return -1; long rem = st1.peek(); if (rem < 0) return (int) min; else return (int) (min + rem); } public int getMin() { return (int) min; } } /** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(val); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */ |